#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>

// 设置控制台颜色函数
void setTextColor(int color) {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}

// 延时函数
void delay(int milliseconds) {
    clock_t start_time = clock();
    while (clock() < start_time + milliseconds);
}

void printDancingText(const char* text) {
    int i, j;
    int width = 20;  // 左右移动的范围
    
    // 设置初始控制台颜色和标题
    system("title 唐清泉动画");
    setTextColor(14); // 设置黄色
    
    while (1) {
        // 水平移动文字的效果
        for (i = 0; i < width; i++) {
            system("cls"); // 清屏
            // 打印文字并前面添加空格实现左右移动
            for (j = 0; j < i; j++) printf(" ");
            printf("%s\n", text);
            delay(100); // 延时
        }
        
        // 垂直移动文字的效果
        for (i = 0; i < 5; i++) {
            system("cls");
            printf("\n\n\n"); // 添加换行实现上下移动
            printf("%s\n", text);
            delay(100);
        }
        
        // 水平移动回来
        for (i = width; i > 0; i--) {
            system("cls");
            for (j = 0; j < i; j++) printf(" ");
            printf("%s\n", text);
            delay(100);
        }
        
        // 文字抖动效果
        for (i = 0; i < 5; i++) {
            system("cls");
            if (i % 2 == 0)
                printf("   %s\n", text); // 向右移动
            else
                printf("%s   \n", text); // 向左移动
            delay(100);
        }
    }
}

int main() {
    char text[] = "唐清泉";
    printDancingText(text);
    return 0;
}